package ar.edu.unq.edp.futbol.mains;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import unq.equipos.dom.Equipo;
import unq.equipos.dom.Habilidad;
import unq.equipos.dom.HabilidadImpl;
import unq.equipos.dom.Jugador;
import unq.equipos.dom.Posicion;

public class InsertEquiposBasic {

	public static void main(String[] args) {

		Jugador jugador1, jugador2, jugador3, jugador6, jugador7, jugador8, jugador10, jugador11, jugador12;
		Habilidad habilidadJugador1, habilidadArqueroMedioPelo, habilidadLateral, habilidadCentral, habilidadVolanteDefensivo, habilidadVolanteLateral, habilidadEnganche, habilidadDelantero, habilidadMediaPunta;
		Equipo equipo;

		// Esta instancia es thread safe
		SessionFactory sessionFactory = new Configuration().configure()
				.buildSessionFactory();

		// esta ya no es threadSafe
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();

		habilidadJugador1 = new HabilidadImpl(Posicion.Lateral, 5);
		habilidadArqueroMedioPelo = new HabilidadImpl(Posicion.Arquero, 1);
		habilidadLateral = new HabilidadImpl(Posicion.Lateral, 9);
		habilidadCentral = new HabilidadImpl(Posicion.Central, 9);
		habilidadVolanteDefensivo = new HabilidadImpl(
				Posicion.VolanteDefensivo, 9);
		habilidadVolanteLateral = new HabilidadImpl(Posicion.VolanteLateral, 9);
		habilidadEnganche = new HabilidadImpl(Posicion.Enganche, 9);
		habilidadDelantero = new HabilidadImpl(Posicion.Delantero, 9);
		habilidadMediaPunta = new HabilidadImpl(Posicion.MediaPunta, 9);

		jugador1 = new Jugador("0");
		jugador1.agregarHabilidad(habilidadJugador1);
		jugador2 = new Jugador("a");
		jugador2.agregarHabilidad(habilidadArqueroMedioPelo);
		jugador3 = new Jugador("b");
		jugador3.agregarHabilidad(habilidadLateral);
		jugador6 = new Jugador("e");
		jugador6.agregarHabilidad(habilidadCentral);
		jugador7 = new Jugador("f");
		jugador7.agregarHabilidad(habilidadVolanteDefensivo);
		jugador8 = new Jugador("g");
		jugador8.agregarHabilidad(habilidadVolanteLateral);
		jugador10 = new Jugador("i");
		jugador10.agregarHabilidad(habilidadEnganche);
		jugador11 = new Jugador("j");
		jugador11.agregarHabilidad(habilidadDelantero);
		jugador12 = new Jugador("k");
		jugador12.agregarHabilidad(habilidadMediaPunta);

		equipo = new Equipo("wasd");
		equipo.agregarJugador(jugador2, jugador3, jugador6,
				jugador7, jugador8, jugador10, jugador11, jugador12);

		try {
			session.save(equipo);
			transaction.commit();
		} catch (RuntimeException e) {
			transaction.rollback();
			throw e;
		} finally {
			session.close();
		}

	}
}
